//package com.fecean.aabbc.netty.message5;
//
//import lombok.extern.slf4j.Slf4j;
//
//import java.time.Instant;
//import java.util.UUID;
//
///**
// ** 消息建造器
// *
// * @author: chenfenghai
// * @version: 1.0
// * @date: 2020-03-10 14:31
// * @blame Team
// */
//@Slf4j
//public class MessageBuilder {
//
//    /**
//     ** 消息原型
//     */
//    private MessageProto.Message message;
//
//    /**
//     ** 构造注册消息
//     * @return MessageBuilder
//     */
//    public static MessageBuilder buildRegisterMessage(
//            String tenantId, String cinemaCode){
//        return buildMessage(MessageTypeEnum.REGISTER, tenantId, cinemaCode);
//    }
//
//    /**
//     ** 构造心跳消息
//     * @return MessageBuilder
//     */
//    public static MessageBuilder buildHeartbeatMessage(
//            String tenantId, String cinemaCode){
//        return buildMessage(MessageTypeEnum.HEARTBEAT, tenantId, cinemaCode);
//    }
//
//    /**
//     ** 构造通知消息
//     * @return MessageBuilder
//     */
//    public static MessageBuilder buildNoticeMessage(
//            String tenantId, String cinemaCode, String content){
//        return buildMessage(MessageTypeEnum.NOTICE, tenantId, cinemaCode, content);
//    }
//
//    /**
//     ** 构造请求消息
//     * @return MessageBuilder
//     */
//    public static MessageBuilder buildRequestMessage(
//            String tenantId, String cinemaCode, String content){
//        return buildMessage(MessageTypeEnum.REQUEST, tenantId, cinemaCode, content);
//    }
//
//    /**
//     ** 构造请求消息
//     * @return MessageBuilder
//     */
//    public static MessageBuilder buildResponseMessage(String id,
//            String tenantId, String cinemaCode, String content){
//        MessageBuilder messageBuilder = new MessageBuilder();
//        messageBuilder.message = MessageProto.Message.newBuilder()
//                .setId(id)
//                .setType(MessageTypeEnum.RESPONSE.getCode())
//                .setTenant(tenantId)
//                .setCinema(cinemaCode)
//                .setContent(content)
//                .setTimestamp(Instant.now().toEpochMilli())
//                .build();
//        return messageBuilder;
//    }
//
//    /**
//     ** 构造消息
//     * @return MessageBuilder
//     */
//    private static MessageBuilder buildMessage(
//            MessageTypeEnum messageType, String tenantId, String cinemaCode){
//        MessageBuilder messageBuilder = new MessageBuilder();
//        messageBuilder.message = MessageProto.Message.newBuilder()
//                .setId(UUID.randomUUID().toString())
//                .setType(messageType.getCode())
//                .setTenant(tenantId)
//                .setCinema(cinemaCode)
//                .setTimestamp(Instant.now().toEpochMilli())
//                .build();
//        return messageBuilder;
//    }
//
//    /**
//     ** 构造消息
//     * @return MessageBuilder
//     */
//    private static MessageBuilder buildMessage(
//            MessageTypeEnum messageType, String tenantId, String cinemaCode, String content){
//        MessageBuilder messageBuilder = new MessageBuilder();
//        messageBuilder.message = MessageProto.Message.newBuilder()
//                .setId(UUID.randomUUID().toString())
//                .setType(messageType.getCode())
//                .setTenant(tenantId)
//                .setCinema(cinemaCode)
//                .setContent(content)
//                .setTimestamp(Instant.now().toEpochMilli())
//                .build();
//        return messageBuilder;
//    }
//
//    /**
//     ** 读取Netty消息
//     * @param objectMessage 消息内容
//     * @return MessageBuilder
//     */
//    public static MessageBuilder readMessage(Object objectMessage){
//        MessageBuilder builder = new MessageBuilder();
//        if(objectMessage instanceof MessageProto.Message){
//            builder.message = (MessageProto.Message)objectMessage;
//        }
//        return builder;
//    }
//
//    /**
//     ** 是否业务信息
//     * @param messageType 消息类型
//     * @return boolean
//     */
//    public boolean isMessage(MessageTypeEnum messageType){
//        return message != null && messageType.compare(message.getType());
//    }
//
//    /**
//     ** 获取消息体对象
//     * @return NettyMessage
//     */
//    public MessageProto.Message getMessage(){
//        return message;
//    }
//
//    public NoticeMessage getNoticeMessage(){
//        NoticeMessage notice = new NoticeMessage();
//        notice.setId(message.getId());
//        notice.setTenantId(message.getTenant());
//        notice.setCinemaCode(message.getCinema());
//        notice.setContent(message.getContent());
//        notice.setTimestamp(message.getTimestamp());
//        return notice;
//    }
//
//    public RequestMessage getRequestMessage(){
//        RequestMessage request = new RequestMessage();
//        request.setId(message.getId());
//        request.setTenantId(message.getTenant());
//        request.setCinemaCode(message.getCinema());
//        request.setContent(message.getContent());
//        request.setTimestamp(message.getTimestamp());
//        return request;
//    }
//
//    public ResponseMessage getResponseMessage(){
//        ResponseMessage response = new ResponseMessage();
//        response.setId(message.getId());
//        response.setTenantId(message.getTenant());
//        response.setCinemaCode(message.getCinema());
//        response.setContent(message.getContent());
//        response.setTimestamp(message.getTimestamp());
//        return response;
//    }
//}
